package com.foreknow.demo03;

import java.util.Scanner;

/**
 * 作业练习(老师版本)
 * 实现条件 1.登陆界面，2.三次登陆机会，登陆成功进入登陆菜单，
 * 3，进入菜单进行选择，实现 1,查询，2，存款，3，取款，
 * 4，修改密码，5退出，再位选择退出时可一直重复操作
 *
 * 模拟简单的ATM机存取款程序
 * 功能：1.登陆页面（输出）  2.登录   3.菜单：3.1查询   3.2存款  3.3取款  3.4修改密码  3.5退出系统
 *
 */

public class ZuoYe2 {
    public static void welcome() {
        /**
         * 1.登录页面的输出
         */
        System.out.println("---------------------------------");
        System.out.println(" **********   欢迎登陆  **********");
        System.out.println(" *********   中国人民银行 *********");
        System.out.println(" *********    版本1.0   *********");
        System.out.println("---------------------------------");
    }

    /**
     * 2.登录
     *
     * @param user 用户名
     * @param pwd  密码
     * @return boolean
     */
    public static boolean login(String user, String pwd) {
        Scanner input = new Scanner(System.in);
        for (int i = 3; i > 0; i--) {
            System.out.println("请输入账号");
            String new_user = input.next();
            System.out.println("请输入密码");
            String new_pwd = input.next();
            if (user.equals(new_user) && pwd.equals(new_pwd)) {
                //登陆成功
                System.out.println("登陆成功");
                return true;
            } else {
                if (i - 1 == 0) {
                    System.out.println("您的密码已经错误3次。。。");
                    //退出系统
                    System.exit(0);
                }
                System.out.println("账户名或者密码错误，请重新输入，今日还有" + (i - 1) + "次机会");
            }
        }
        return false;
    }

    /**
     * 判断是否操作（y/n）S
     */
    public static void decide() {
        Scanner input = new Scanner(System.in);
        System.out.println("是否继续操作（y/n）");
        String dec = input.next();
        if (dec.equals("y")) {
            return;
        } else if (dec.equals("n")) {
            System.out.println("退出成功。。。");
            System.exit(0);
        } else {
            while (true) {
                System.out.println("输入错误，请重新输入是否继续（y/n）");
                String temp = input.next();
                if (temp.equals("y")) {
                    return;
                } else if (dec.equals("n")) {
                    System.out.println("退出成功。。。");
                    System.exit(0);
                }
            }
        }
    }

    /**
     * 查询余额
     * @param money
     */
    public static void checkmoney(double money) {
        System.out.println("您的余额为"+money);
    }

    public static double setMoney(double money){
        System.out.println("请输入要存款的金额");
        Scanner input = new Scanner(System.in);
        double addMoney = input.nextInt();
        if(addMoney>10000){
            System.out.println("单次取款的金额超过一万元");
            return 0;
        }else if(addMoney<0){
            System.out.println("存款的金额错误");
            return 0;
        }else if (addMoney%100 !=0){
            System.out.println("请输入100的整数倍存款");
            return 0;
        }else{
            System.out.println("存款成功，当前的余额为"+(money+addMoney));
            return addMoney;
        }
    }

    /**
     * 取款
     * @param money
     * @return
     */
    public static double getMoney(double money){
        System.out.println("请输入取款的金额");
        Scanner input = new Scanner(System.in);
        double subMnoey = input.nextInt();
        if(subMnoey>money){
            System.out.println("余额不足");
            return 0;
        }else if(subMnoey>3000){
            System.out.println("单次取款金额超过3000");
            return 0;
        }else if (subMnoey<0){
            System.out.println("取款金额错误");
            return 0;
        }else if(subMnoey%100 !=0){
            System.out.println("请取出100的整数倍存款");
            return 0;
        }else{
            System.out.println("取款成功，当前的余额为"+(money-subMnoey));
            return subMnoey;
        }
    }


    /**
     * 修改密码
     * @param pwd
     * @return
     */
    public static String changePwd(String pwd){
        System.out.println("请输入旧密码");
        Scanner input = new Scanner(System.in);
        String old_pwd = input.next();
        if(old_pwd.equals(pwd)){
            System.out.println("请输入新密码");
            String new_pwd = input.next();
            System.out.println("请再次输入新密码");
            String new_pwd1 = input.next();
            if(new_pwd.equals(new_pwd1)){
                System.out.println("修改密码成功...");
                return new_pwd;
            }else {
                System.out.println("两次输入密码不一致，请重新输入");
                return pwd;
            }
        }else {
            System.out.println("旧密码输入错误");
        }
        return pwd;
    }


    public static void main(String[] args) {
        //初始化一个账户信息，因为没有数据库
        String user = "admin";
        String pwd = "123";
        double money = 10000;//余额
        Scanner input = new Scanner(System.in);
        //登录的界面
        ZuoYe2.welcome();
        //用户一定要先登陆才能对系统进行操作
        //调用登陆的方法login
        boolean b = login(user, pwd);
        while (b == true) {
            //如果登录成功，就可以进入操作的界面
            while (true) {
                System.out.println("1 查询   2 存款  3 取款  4 修改密码  5 退出系统");
                int opt = input.nextInt();
                switch (opt) {
                    case 1:
                        //查询余额
                        checkmoney(money);
                        //询问用户是否继续
                        decide();
                        break;
                    case 2:
                        //存款
                        money+=setMoney(money);
                        decide();
                        break;
                    case 3:
                        //取款
                        money-=getMoney(money);
                        decide();
                        break;
                    case 4:
                        //修改密码，因为没有数据库，所以直接打印当前的密码来查询是否成功
                        pwd = changePwd(pwd);
                        System.out.println("当前的密码"+pwd);
                        decide();
                        break;
                    case 5:
                        //退出系统
                        System.out.println("退出成功");
                        System.exit(0);
                        break;
                    default:
                        System.out.println("非法操作");
                        break;
                }
            }
        }
    }
}